import { loginAPI } from '@/api/user'
import { getToken, removeToken, setToken } from '@/utils/auth'

export default {
  // 开启命名空间
  namespaced: true,
  // 1. 定义数据(全局共享的数据)
  state: {
    // 优先从本地获取
    token: getToken() || ''
  },
  // 2. 修改数据（定义函数）=》同步
  mutations: {
    // 设置token
    setToken(state, token) {
      // 1. 内存存了一份
      state.token = token
      // 2. 本地存储存了一份
      setToken(token)
    },
    // 删除token
    delToken(state) {
      state.token = '',
      removeToken()
    }
  },
  // 3. 定义异步操作/请求
  actions: {
    /**
     *
     * @param {*} ctx 类似 this.$store
     * @param {*} data 传入的数据=》用户名和密码
     */
    async loginAction(ctx, data) {
      //  1. 调用登录 api 函数
      const res = await loginAPI(data)
      // 2. 将 token 存储到 state 中
      ctx.commit('setToken', res.data.token)
    }
  }
}